package it.probabili.formazioni.elabora;

import it.probabili.formazioni.utility.Utils;
import it.probabili.formazioni.vo.Giocatore;
import it.probabili.formazioni.vo.Match;
import it.probabili.formazioni.vo.Squadra;

import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;


public class ElaboraFormazioniHTML {

	
	public static Match generaMatch(Document doc, Object linkAggiornamento,String testata){
		Match match = null;
		
		Squadra squadraCasa = null;
		Squadra squadraOspite = null;
		if("tuttosport".equalsIgnoreCase(testata)){
			squadraCasa = generaSquadraCasaTuttoSport(doc, linkAggiornamento);
			squadraOspite = generaSquadraOspiteTuttoSport(doc, linkAggiornamento);	
		}else if("corrieredellosport".equalsIgnoreCase(testata)){
			squadraCasa = generaSquadraCasaCorriereDelloSport(doc, linkAggiornamento);
			squadraOspite = generaSquadraOspiteCorriereDelloSport(doc, linkAggiornamento);
		}
		
		if(Utils.isNotEmpty(squadraCasa) && (Utils.isNotEmpty(squadraOspite))){
			match = new Match(squadraCasa.getNomeSquadra()+"-"+squadraOspite.getNomeSquadra());
			match.setSquadraCasa(squadraCasa);
			match.setSquadraOspite(squadraOspite);
		}
		
		return match;
		
	}

	
	/**
	 * Genera le liste dei giocatori PER LA SQUADRA DI CASA (titolari, panchina, indisponibili) 
	 * dall'html dei tuttoSport
	 * @param squadra
	 * @param document
	 */
	
	public static Squadra generaSquadraCasaTuttoSport(Document doc, Object linkAggiornamento){
		
		Squadra squadra;
		
		if(Utils.isNotEmpty(linkAggiornamento) && Utils.isNotEmpty(doc)){
			
			Elements elementiCasa = doc.select(".player_Team_A");
			Elements squadraCasa = doc.select(".Team_A");
			Elements panchinaCasa = squadraCasa.select(".player");
			Element indisponibiliCasa = doc.select(".Team_A").get(doc.select(".Team_A").size()-1); 
			
			String nomeSquadra = squadraCasa.get(0).text();
			nomeSquadra = nomeSquadra.substring(0,nomeSquadra.indexOf(" "));
			
			squadra = new Squadra(nomeSquadra, linkAggiornamento);

			String nomeGiocatore = "";
			
			for(int i=0; i<elementiCasa.size();i++){
				nomeGiocatore =elementiCasa.get(i).text().substring(elementiCasa.get(i).text().indexOf(" ")+1,elementiCasa.get(i).text().length()); 
				
				squadra.addGiocatoreTitolare(new Giocatore(nomeGiocatore));
				
			}
			
			for(int i=0; i<panchinaCasa.size();i++){
				nomeGiocatore = panchinaCasa.get(i).text();
				if(Utils.isNotEmpty(nomeGiocatore)){
					
					squadra.addGiocatorePanchina(new Giocatore(nomeGiocatore));
					
				}
			}
			
			String[] indi = indisponibiliCasa.text().split(",");  
			for(int i=0; i<indi.length;i++){
				nomeGiocatore = indi[i].trim();
				if(Utils.isNotEmpty(nomeGiocatore)){
					squadra.addGiocatoreIndisponibili(new Giocatore(nomeGiocatore));
				}
			}
			
			return squadra;
		}else{
			return null;
		}
	}
	
	/**
	 * Genera le liste dei giocatori PER LA SQUADRA OSPITE (titolari, panchina, indisponibili) 
	 * dall'html dei tuttoSport
	 * @param squadra
	 * @param document
	 */
	public static Squadra generaSquadraOspiteTuttoSport(Document doc, Object linkAggiornamento){
		
		Squadra squadra;
		
		if(Utils.isNotEmpty(linkAggiornamento) && Utils.isNotEmpty(doc)){
			
			Elements elementiCasa = doc.select(".player_Team_B");
			Elements squadraOspite = doc.select(".Team_B");
			Elements panchinaCasa = squadraOspite.select(".player");
			Element indisponibiliCasa = doc.select(".Team_B").get(doc.select(".Team_B").size()-1); 
			
			String nomeSquadra = squadraOspite.get(0).text();
			nomeSquadra = nomeSquadra.substring(0,nomeSquadra.indexOf(" "));
			
			squadra = new Squadra(nomeSquadra, linkAggiornamento);

			String nomeGiocatore = "";
			
			for(int i=0; i<elementiCasa.size();i++){
				nomeGiocatore =elementiCasa.get(i).text().substring(elementiCasa.get(i).text().indexOf(" ")+1,elementiCasa.get(i).text().length()); 
				
				squadra.addGiocatoreTitolare(new Giocatore(nomeGiocatore));
				
			}
			
			for(int i=0; i<panchinaCasa.size();i++){
				nomeGiocatore = panchinaCasa.get(i).text();
				if(Utils.isNotEmpty(nomeGiocatore)){
					
					squadra.addGiocatorePanchina(new Giocatore(nomeGiocatore));
					
				}
			}
			
			String[] indi = indisponibiliCasa.text().split(",");  
			for(int i=0; i<indi.length;i++){
				nomeGiocatore = indi[i].trim();
				if(Utils.isNotEmpty(nomeGiocatore)){
					squadra.addGiocatoreIndisponibili(new Giocatore(nomeGiocatore));
				}
			}
			return squadra;
		}else{
			return null;
		}
	}
	
	

	/**
	 * Genera le liste dei giocatori PER LA SQUADRA DI CASA (titolari, panchina, indisponibili) 
	 * dall'html dei CorriereDelloSport
	 * @param squadra
	 * @param document
	 */
	
	public static Squadra generaSquadraCasaCorriereDelloSport(Document doc, Object linkAggiornamento){
		
		Squadra squadra;
		
		if(Utils.isNotEmpty(linkAggiornamento) && Utils.isNotEmpty(doc)){
			
			Elements elementiCasa = doc.select(".player_Team_A");
			Elements squadraCasa = doc.select(".home");
			Elements panchinaCasa = squadraCasa.select("strong");
			//Element indisponibiliCasa = doc.select(".Team_A").get(doc.select(".Team_A").size()-1); 
			
			String nomeSquadra = squadraCasa.select("h4").text() ;// squadraCasa.get(1).text();
			nomeSquadra = nomeSquadra.substring(0,Utils.indexOfInteger(nomeSquadra)+1);
			
			squadra = new Squadra(nomeSquadra, linkAggiornamento);

			String nomeGiocatore = "";
			
			for(int i=0; i<elementiCasa.size();i++){
				nomeGiocatore =elementiCasa.get(i).text().substring(elementiCasa.get(i).text().indexOf(" ")+1,elementiCasa.get(i).text().length()); 
				
				squadra.addGiocatoreTitolare(new Giocatore(nomeGiocatore));
				
			}
			
			for(int i=0; i<panchinaCasa.size();i++){
				nomeGiocatore = panchinaCasa.get(i).text();
				if(Utils.isNotEmpty(nomeGiocatore)){
					
					squadra.addGiocatorePanchina(new Giocatore(nomeGiocatore));
					
				}
			}
			
//			String[] indi = indisponibiliCasa.text().split(",");  
//			for(int i=0; i<indi.length;i++){
//				nomeGiocatore = indi[i].trim();
//				if(Utils.isNotEmpty(nomeGiocatore)){
//					squadra.addGiocatoreIndisponibili(new Giocatore(nomeGiocatore));
//				}
//			}
			
			return squadra;
		}else{
			return null;
		}
	}
	
	/**
	 * Genera le liste dei giocatori PER LA SQUADRA OSPITE (titolari, panchina, indisponibili) 
	 * dall'html dei CorriereDelloSport
	 * @param squadra
	 * @param document
	 */
	public static Squadra generaSquadraOspiteCorriereDelloSport(Document doc, Object linkAggiornamento){
		
		Squadra squadra;
		
		if(Utils.isNotEmpty(linkAggiornamento) && Utils.isNotEmpty(doc)){
			
			Elements elementiOspite = doc.select(".player_Team_B");
			Elements squadraOspite = doc.select(".away");
			Elements panchinaOspite = squadraOspite.select("strong");
//			Element indisponibiliCasa = doc.select(".Team_B").get(doc.select(".Team_B").size()-1); 
			
			String nomeSquadra = squadraOspite.select("h4").text() ;// squadraCasa.get(1).text();
			nomeSquadra = nomeSquadra.substring(0,Utils.indexOfInteger(nomeSquadra)+1);
			
			squadra = new Squadra(nomeSquadra, linkAggiornamento);

			String nomeGiocatore = "";
			
			for(int i=0; i<elementiOspite.size();i++){
				nomeGiocatore =elementiOspite.get(i).text().substring(elementiOspite.get(i).text().indexOf(" ")+1,elementiOspite.get(i).text().length()); 
				
				squadra.addGiocatoreTitolare(new Giocatore(nomeGiocatore));
				
			}
			
			for(int i=0; i<panchinaOspite.size();i++){
				nomeGiocatore = panchinaOspite.get(i).text();
				if(Utils.isNotEmpty(nomeGiocatore)){
					
					squadra.addGiocatorePanchina(new Giocatore(nomeGiocatore));
					
				}
			}
			
//			String[] indi = indisponibiliCasa.text().split(",");  
//			for(int i=0; i<indi.length;i++){
//				nomeGiocatore = indi[i].trim();
//				if(Utils.isNotEmpty(nomeGiocatore)){
//					squadra.addGiocatoreIndisponibili(new Giocatore(nomeGiocatore));
//				}
//			}
			return squadra;
		}else{
			return null;
		}
	}
	
}
